相信大家對基本的語法都有初步的了解,如 if elif else
, for loop
, while loop
...
熟悉基本語法的下一步是什麼?是資料結構與演算法
西元1984年的圖靈獎得主 Niklaus Wirth 曾經提出 "Programs = Data Structures + Algorithms" ,翻譯成中文「程式=資料結構+演算法」,由此可知我們的下一步至關重要!
根據一些資料的特性,也許是相似性,也可能是相關性,我們把他們包裝成一個物件,這個物件稱為一個資料結構
舉例來說:
我們要存取全班20人的成績:
List
),依照索引值(index
)存取大家的成績有沒有一種把散落移地的玩具收盡收納櫃的感覺呢?第二種方法是不是好多了!
其實,我們常用的這個 List
就是一種資料結構!
列舉一些常見的資料結構:
Array
) / 列表(List
)Dict
)Stack
)Queue
)Linked List
)Tree
)Graph
)Heap
)Hash
)演算法
是解決問題的方法!
既然是解法,那就有分有效率的解法和一般的解法。
舉例來說:
如何在地圖上找到最短路徑?
第一種方法雖然一定可以找到答案,但是速度相對慢了許多。
第二種方法是由圖靈獎得主提出的演算法,時間複雜度相對低了不少。
那我們就會說 Dijkstra Algorithm
是解決這個問題相對好的演算法。
也許在學習刷題時,你會需要把一串數字由小到大排列,但是你發覺當數字數量變大時,程式所花的時間變得極長!
為什麼呢? 原因可能是你使用了速度較慢的演算法!
排序演算法曾經是一個很熱門的研究問題,許多人也提出了各自的演算法:
Bubble Sort
)Selection Sort
)Insertion Sort
)Quick Sort
)Merge Sort
)接下來的鐵人賽,我們的重心會擺在介紹一些基礎的資料結構,並用 Python 實作